এই অধ্যায়ে আপনি সি প্রোগ্রামিং স্ট্রিং(string) এবং এর বিভিন্ন অপারেশন সম্মন্ধে জানবেন। এছাড়া আপনি স্ট্রিং ডিক্লেয়ার(declare) করা, ইনিশিয়ালাইজ(initialize) করা এবং বিভিন্ন ইনপুট/আউটপুট অপারেশনে এদের ব্যবহার সম্মন্ধেও জানবেন।
সি প্রোগ্রামিং এ ক্যারেক্টারে(character) এর array কে স্ট্রিং বলা হয়। null(/0
) ক্যারেক্টারের মাধ্যমে স্ট্রিং এর সমাপ্তি ঘটে। উদাহরনস্বরুপঃ
"c string tutorial"
এখানে, "c string tutorial" হলো স্ট্রিং(string)। কম্পাইলার যখন স্ট্রিং কে কম্পাইল করে তখন স্ট্রিং এর শেষে একটি null(/0
) ক্যারেক্টার যুক্ত করে দেয়।
স্ট্রিং(string) নিয়ে কাজ করার পূর্বে প্রথমে তাদেরকে ডিক্লেয়ার(declared) করতে হবে।
array কে যে পদ্ধতিতে ডিক্লেয়ার(declared) করা হয় ঠিক একই পদ্ধতিতে স্ট্রিংও ডিক্লেয়ার করা হয়। শুধু পার্থক্য হলো স্ট্রিং char
টাইপের।
char s[5];
pointer ব্যবহার করেও স্ট্রিং ডিক্লেয়ার করা যেতে পারেঃ
char *p;
সি প্রোগ্রামিং এ বিভিন্ন পদ্ধতিতে স্ট্রিং ইনিশিয়ালাইজ(initialized) করা যেতে পারে।
সহজ ও সুবিধার জন্য ইনিশিয়ালাইজেশন(initialization) এবং ডিক্লেয়ারেশন(declaration) উভয় কাজ একই ধাপে করা হয়।
char c[] = "abcd";
অথবা,
char c[5] = "abcd";
অথবা,
char c[] = {'a', 'b', 'c', 'd', '\0'};
অথবা,
char c[5] = {'a', 'b', 'c', 'd', '\0'};
pointer ব্যবহার করেও স্ট্রিংকে নিম্নের ন্যায় ইনিশিয়ালাইজ(initialized) করা যেতে পারেঃ
char *c = "abcd";
অন্য সকল ডাটা টাইপের মতই scanf()
ফাংশন ব্যবহার করে আপনি স্ট্রিং পাঠ(read) করতে পারেন।
যাইহোক scanf()
ফাংশন প্রবেশকৃত শব্দ-সমূহের শুধুমাত্র প্রথম শব্দকে গ্রহণ করে। হোয়াইট স্পেস(white space) বা শুধুমাত্র স্পেসের দেখা পাওয়া মাত্র এই ফাংশনের সমাপ্তি ঘটে।
char c[20];
scanf("%s", c);
kt_satt_skill_example_id=408
উপরের প্রোগ্রামে Rahman কে অবজ্ঞা করা হয়েছে কারণ scanf()
ফাংশন স্পেসের পূর্ববর্তী একটি মাত্র শব্দকে গ্রহণ করে।
টেক্সট এর একটি সম্পূর্ণ সারিকে পাঠ/গ্রহণ করার জন্য প্রত্যেক ক্যারেক্টারকে একটি একটি করে পাঠ করা হয়।
//টার্মিনাল(terminal) থেকে কিভাবে একটি একটি করে ক্যারেক্টার পাঠ করতে হয় তা ভালভাবে বুঝার জন্য সি প্রোগ্রাম
#include <stdio.h>
int main()
{
char name[30], ch;
int i = 0;
printf("Enter name: ");
while(ch != '\n') //ইউজার enter বাটনে ক্লিক করলেই সমাপ্তি ঘটে
{
ch = getchar();
name[i] = ch;
i++;
}
name[i] = '\0'; // সবশেষে null ক্যারেক্টার যুক্ত করা
printf("Name: %s", name);
return 0;
}
উপরে প্রোগ্রামে getchar()
ফাংশন ব্যবহার করে প্রতিবার ch ইউজার থেকে একটি করে অক্ষর গ্রহণ করে।
ইউজার enter বাটনে ক্লিক না করা পর্যন্ত এই প্রক্রিয়া চলতেই থাকে। পরিশেষে ইহাকে স্ট্রিং তৈরি করার জন্য শেষে একটি null character যুক্ত করা হয়।
স্ট্রিং গ্রহণের জন্য ইহা একটি বিরক্তিকর পদ্ধতি।
সি প্রোগ্রামিং এ স্ট্রিং গ্রহণ এবং প্রদর্শনীর জন্য আরোও সহজ পদ্ধতিঃ পূর্বনির্ধারিত লাইব্রেরী ফাংশন যথাক্রমে gets()
এবং puts
ব্যবহার করতে পারেন।
kt_satt_skill_example_id=412
উপরের উভয় প্রোগ্রাম একই আউটপুট দেয়ঃ
সি প্রোগ্রামিং এ স্ট্রিং char
array এর মতই। সুতরাং এদেরকে array এর মত একই পদ্ধতিতে ফাংশনের মধ্য দিয়ে অতিক্রম(pass) করানো যেতে পারে।
আরোও জানতে ফাংশনের মধ্য দিয়ে array অতিক্রম অধ্যায় ভিজিট করুন।
#include <stdio.h>
void displayString(char str[]);
int main()
{
char str[50];
printf("Enter string: ");
gets(str);
displayString(str); // ফাংশনের মধ্য দিয়ে স্ট্রিং s কে অতিক্রম করানো হয়।
return 0;
}
void displayString(char str[]){
printf("String Output: ");
puts(str);
}
উপরের প্রোগ্রামে স্ট্রিং(string) s
কে main()
ফাংশন থেকে ইউজার ডিফাইন্ড(user-defined) ফাংশন displayString()
এর মধ্য দিয়ে অতিক্রম(pass) করানো হয়েছে। ফাংশন ডিক্লেয়ারেশনে str[]
হলো ফরম্যাল আর্গুমেন্ট(formal argument)।
সি প্রোগ্রামিং এ অনেক ধরণের স্ট্রিং অপারেশন রয়েছে যেগুলো আপনি ম্যানুয়ালি(manually) সম্পাদন করতে পারেন। যেমন- স্ট্রিং এর দৈর্ঘ্য(length) নির্ণয়, স্ট্রিং কপি(copy) করা, দুটি স্ট্রিং এর সংযোগ(concatenation) ইত্যাদি।
কিন্তু প্রোগ্রামারদেরকে সহজ করে দেওয়ার জন্য এধরনের অনেক লাইব্রেরী ফাংশন <string.h>
হেডার ফাইলের অধীনে ইতোমধ্যেই ডিফাইন্ড(defined) করা আছে।
আরোও জানতে সি প্রোগ্রামিং স্ট্রিং পরিচালনা অধ্যায় ভিজিট করুন।
common.read_more